package exception;

/*
 * 异常处理机制中的finally块
 * finally块是异常处理机制的最后一块，它可以直接跟在try之后，或者最后一个catch之后，finally可以保证只要程序执行到try语句块中，无论try中代码是否出现异常，最终finally都会执行
 * 实际开发中我们通常会将释放资源这类操作放在finally中确保执行，比如Io中的关闭流操作
 * */
public class FinallyDemo {
    public static void main(String[] args) {
        try {
//            String line  = "hello";
            String line = null;
            //如果当前line为空 line.length出现异常时会直接被catch捕获到 这时try方法体重line.length之后的语句就不会执行
            //但是finally方法块中 不管你是try中的语句出现错误还是没有出现错误，finally方法体中的数据都会执行
            System.out.println(line.length());
            return;
        } catch (NullPointerException e) {
            System.out.println("空指针异常" + e.getLocalizedMessage());
        } finally {

            /*finally当try和catch执行结束后 会执行finally块中的内容 不管catch中捕捉没捕捉到异常
             * finally块中的内容都会执行
             * 通常用来使用关闭资源这类的操作
             * try{}catch(){}finally{}
             * try{}catch(){}finally*/

            System.out.println("finally中程序执行结束啦！");
        }
        System.out.println("程序结束了");
    }
}
